Linux之shell编程条件判断 | 您所在的位置:网站首页 › shell while 判断条件 › Linux之shell编程条件判断 |
if 语法格式 if condition then statements [elif condition then statements] [else statements ] fi示例 vi if.sh #!/bin/bash if [ $1 = root ] then echo "hello $2 , welcome !" elif [ $1 = intsmaze ] then echo "hello ${2}, welcome !" else echo "SB${2}, get out here !" fish if.sh intsmaze nihao 通过执行脚本时,在脚本命令的后面传入参数。 判断条件1:条件判断基本语法 [ condition ] (注意condition前后要有空格) #非空返回true,可使用$?验证(0为true,1为false) #空返回false,里面条件为空格也是叫空。 [hadoop@centos-Reall-131 shtest]$ if [ 1 ]; then echo ok ;else echo bad; fi; ok [hadoop@centos-Reall-131 shtest]$ if [ 0 ]; then echo ok ;else echo bad; fi; ok [hadoop@centos-Reall-131 shtest]$ if [ a ]; then echo ok ;else echo bad; fi; ok [hadoop@centos-Reall-131 shtest]$ if [ ]; then echo ok ;else echo bad; fi; bad [hadoop@centos-Reall-131 shtest]$ if [ ]; then echo ok ;else echo bad; fi; bad注意[ ]内部的=周边的空格,有区别: [hadoop@centos-Reall-131 shtest]$ if [ a=b ]; then echo ok ;else echo bad; fi; ok [hadoop@centos-Reall-131 shtest]$ if [ a = b ]; then echo ok ;else echo bad; fi; bad#a=b它识别为一个整体的字符串,所以条件判断为true 短路(理解为三元运算符) [ condition ] && echo OK || echo notok 条件满足,执行&&后面的语句;条件不满足,执行|| 后面的语句 2:条件判断组合 注:[] 与[[ ]] 的区别:[[ ]] 中逻辑组合可以使用 &&(与) ,||(或) ,而[] 里面逻辑组合可以用 -a(与) ,-o(或)。 [hadoop@centos-Reall-131 shtest]$ if [ a = b && b = c ]; then echo ok;else echo bad;fi -bash: [: missing `]' bad [hadoop@centos-Reall-131 shtest]$ if [ a = b -a b = b ]; then echo ok;else echo bad;fi bad [hadoop@centos-Reall-131 shtest]$ if [ a = b -o b = b ]; then echo ok;else echo bad;fi ok [hadoop@centos-Reall-131 shtest]$ if [[ a = b && b = b ]]; then echo ok;else echo bad;fi bad [hadoop@centos-Reall-131 shtest]$ if [[ a = b || b = b ]]; then echo ok;else echo bad;fi ok3:常用判断运算符 字符串比较:= ,!= ,-z 字符串长度是为0返回true,-n 字符串长度是不为0返回true,这里不包括空格的情况。 [hadoop@centos-Reall-131 shtest]$ if [ 'aa' = 'bb' ]; then echo ok; else echo bad;fi #引号可有可无,当然在进行比较时最好使用引号更好表示。 bad [hadoop@centos-Reall-131 shtest]$ if [ -n "aa" ]; then echo ok; else echo bad;fi ok [hadoop@centos-Reall-131 shtest]$ if [ -z "" ]; then echo ok; else echo bad;fi ok整数比较: -lt 小于 -le 小于等于 -eq 等于 -gt 大于 -ge 大于等于 -ne 不等于 文件判断: -d 是否为目录 -f 是否为文件 -e 是否存在 [hadoop@centos-Reall-131 shtest]$ if [ -d /home/hadoop ]; then echo ok; else echo bad;fi ok [hadoop@centos-Reall-131 shtest]$ if [ -f /home/hadoop/ ]; then echo ok; else echo bad;fi bad [hadoop@centos-Reall-131 shtest]$ if [ -e /home/hadoop/ ]; then echo ok; else echo bad;fi ok路径必须找得到,如果没有找到指定路径的文件,则判断条件就为false。 while语法i=1 while ((i |
CopyRight 2018-2019 实验室设备网 版权所有 |